package MediciADistanza.Control.User.Module;

import MediciADistanza.Entity.Conferma;
import MediciADistanza.Boundary.user.InterfacciaAccesso;
import MediciADistanza.Boundary.user.SpecificUser.InterfacciaLoginMedicoPaziente;
import MediciADistanza.Control.User.UtenteControl;
import MediciADistanza.Entity.User.ModelData.DatiAccesso;


/**
 * Gestisce l'immissione e l'invio dei dati d'accesso
 * 
 * 
 *  <p>Semi-implementata</p>
 * 
 * @author Andrea Iann&igrave;
 */
public class AccediControl extends ModuleControl {
	/**
	 * Crea il control di accesso
	 * @param controlPrincipale	Control dell'utente
	 * @param withRegistration	Chiede se visualizzare il tasto di registrazione
	 */
	public AccediControl(UtenteControl controlPrincipale, boolean withRegistration) {
		super(controlPrincipale);
		// TODO Auto-generated constructor stub
		if (withRegistration)
			frameModulo = new InterfacciaLoginMedicoPaziente(this);
		else
			frameModulo = new InterfacciaAccesso(this);
		
	}
	/**
	 * Invia i dati del modulo tramite l'apposita funzione
	 */
	public void sendModule() {
		datiModulo = new DatiAccesso();
		((DatiAccesso)datiModulo).setIdUtente(((InterfacciaAccesso)frameModulo).getID());
		((DatiAccesso)datiModulo).setPassword(((InterfacciaAccesso)frameModulo).getPSW());
		
		super.sendModule();
	}
	/**
	 * termina l'esecuzione
	 */
	@Override
	public void exit() {
		// TODO Auto-generated method stub
		
	}
	/**
	 * Controlla se l'accesso &egrave; stato effettuato
	 */
	@Override
	public void setConferma(Conferma conferma) {
		if (imWaiting){
			super.setConferma(conferma);
			if (conferma.isPositive()) {
				utenteControl.accedi();
			}
		}
	}
	/**
	 * Azione ad eseguire se premuto il tasto di registrazione di un nuovo utente
	 */
	public void registratiPressed(){
		utenteControl.avvia(UtenteControl.REGISTRATI);
	}
	/**
	 * Avvia il modulo di reset della password
	 */
	public void resetPSW() {
		// TODO Auto-generated method stub
		utenteControl.avvia(UtenteControl.RESET_PSW);
	}
}
 
